package com.tarena.lbs.content.dao.mapper;

import com.tarena.lbs.content.pojo.po.ArticleCategoryPO;
import com.tarena.lbs.content.pojo.query.ArticleCategoryQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;


import java.util.List;


@Mapper
public interface CategoryMapper {

    /**
     * 新增文章分类
     * @param categoryPO 分类信息
     * @return 影响行数
     */
    int insert(ArticleCategoryPO categoryPO);

    /**
     * 分页查询分类列表
     * @param query 查询条件
     * @return 分类列表
     */
    List<ArticleCategoryPO> selectPage(ArticleCategoryQuery query);

    /**
     * 查询符合条件的总条数
     * @param query 查询条件
     * @return 总条数
     */
    long selectCount(ArticleCategoryQuery query);

    /**
     * 检查分类名称是否已存在
     * @param categoryName 分类名称
     * @param id 排除当前ID（更新时用）
     * @return 存在数量
     */
    int countByName(@Param("categoryName") String categoryName, @Param("id") Integer id);


    /**
     * 根据ID查询分类信息
     * @param id 分类ID
     * @return 分类信息
     */
    ArticleCategoryPO selectById(Integer id);

    /**
     * 根据ID更新分类信息
     * @param categoryPO 分类信息
     * @return 影响行数
     */
    int updateStatus(ArticleCategoryPO categoryPO);

    /**
     * 根据ID删除分类信息
     * @param id 分类ID
     * @return 影响行数
     */
    int deleteById(Integer id);
}
